home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / video / fly8111-.000 / fly8111- / fly8 / grmgr.c < prev    next >
C/C++ Source or Header  |  1979-12-31  |  1KB  |  86 lines

  1. /* --------------------------------- grmgr.c -------------------------------- */
  2.  
  3. /* This is part of the flight simulator 'fly8'.
  4.  * Author: Eyal Lebedinsky (eyal@ise.canberra.edu.au).
  5. */
  6.  
  7. /* Top level for display-device drivers
  8. */
  9.  
  10. #include "fly.h"
  11.  
  12.  
  13. extern DEVICE * FAR
  14. devices_select (char *dname)
  15. {
  16.     int    xmode;
  17.     char    *p;
  18.     DEVICE    *dev;
  19.  
  20.     if (vm_read ())
  21.         return (0);
  22.  
  23.     if (dname == 0)            /* return default */
  24.         return (Gr->devices);
  25.  
  26.     xmode = 0;
  27.     p = strchr (dname, '=');
  28.     if (p) {        /* "xx=dname" */
  29.         if (1 != sscanf (dname, "%x=", &xmode))
  30.             goto badret;
  31.         dname = p+1;
  32.     }
  33.  
  34.     for (dev = Gr->devices; dev; dev = dev->next) {
  35.         if (!stricmp (dev->name, dname)) {
  36.             if (xmode)
  37.                 dev->mode = xmode;
  38.             return (dev);
  39.         }
  40.     }
  41.     LogPrintf ("bad mode name \"%s\"\n", dname);
  42. badret:
  43.     vm_free ();
  44.     return (0);
  45. }
  46.  
  47. extern void FAR
  48. devices_release (void)
  49. {
  50.     vm_free ();
  51. }
  52.  
  53. extern struct GrDriver NEAR* FAR
  54. devices_init (char *name)
  55. {
  56.     struct GrDriver    NEAR* FAR* p;
  57.     char        *options;
  58.     int        n;
  59.  
  60.     p = GrDrivers;
  61.     if (name) {
  62.         options = strchr (name, ':');
  63.         if (T(options = strchr (name, ':')))
  64.             n = options - name;
  65.         else
  66.             n = strlen (name);
  67.  
  68.         for (; *p; ++p)
  69.             if (!strnicmp ((*p)->name, name, n) && !(*p)->name[n])
  70.                 break;
  71.         if (!*p)
  72.             LogPrintf ("bad device name \"%s\"\n", name);
  73.     }
  74.     return (*p);
  75. }
  76.  
  77. extern void FAR
  78. devices_term (void)
  79. {
  80.     if (!Gr)
  81.         return;
  82.  
  83.     devices_release ();
  84.     Gr = 0;
  85. }
  86.